SPDX-FileCopyrightText: 2015 Mathieu Chabbert SPDX-FileCopyrightText: 2024 AlICe laboratory https://alicelab.be
SPDX-License-Identifier: GPL-3.0-or-later
Toulouse Le Mirail / Tripodes - Mathieu Chabbert Script realisé sous windows 7 avec blender 2015 - 01 - 20 18:16 Hash bbf09d9
import bpy
import random
from random import *
from math import *nettoyage de base
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()définition de la vue 3D >>> rotation en fonction du curseur 3D
def areas_tuple():
res = {}
count = 0
for area in bpy.context.screen.areas:
res[area.type] = count
count += 1
return res
areas = areas_tuple()
view3d = bpy.context.screen.areas[areas["VIEW_3D"]].spaces[0]creer une fonction pdm
def maboite(loc_x, loc_y, loc_z, dim_x, dim_y, dim_z):
bpy.ops.mesh.primitive_cube_add(radius=0.5, location=(loc_x, loc_y, loc_z))
bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
pdm = [2, 3, 4, 6]
hauteurs = [21, 30, 45]
pdmchoisi = choice(pdm)
hauteur_aleatoire = choice(hauteurs)def barre (pdmchoisi,locx,locy,rot,position):
def barre(pdmchoisi, locx, locy, rot, position, rot2):
view3d.cursor_location = position
liste_name = []
for abcisse in range(0, pdmchoisi):
if pdmchoisi == 2:
hauteur_pdm = 21
elif pdmchoisi == 3:
hauteur_pdm = 45
elif pdmchoisi == 4:
hauteur_pdm = hauteur_aleatoire
elif pdmchoisi == 6:
hauteur_pdm = hauteur_aleatoire
maboite(abcisse * 16, 1, (hauteur_pdm / 2) + 1, 4, 5, hauteur_pdm + 2)
name = bpy.context.scene.objects.active.name
liste_name.append(name)
positionPdmX = abcisse * 16
for i in range(0, int(hauteur_pdm / 3)):
if i == 5 or i == 8 or i == 13:
maboite(-4 + positionPdmX, -1.5, ((i * 3) + 1.5), 8, 11, 3)
name = bpy.context.scene.objects.active.name
liste_name.append(name)
maboite(4 + positionPdmX, -1.5, ((i * 3) + 1.5), 8, 11, 3)
name = bpy.context.scene.objects.active.name
liste_name.append(name)
else:
maboite(-4 + positionPdmX, 0, ((i * 3) + 1.5), 8, 14, 3)
name = bpy.context.scene.objects.active.name
liste_name.append(name)
maboite(4 + positionPdmX, 0, ((i * 3) + 1.5), 8, 14, 3)
name = bpy.context.scene.objects.active.name
liste_name.append(name)
for obj in liste_name:
bpy.ops.object.select_pattern(pattern=obj)
bpy.ops.object.join()
bpy.ops.object.origin_set(type="ORIGIN_GEOMETRY")
bpy.context.object.location[0] = locx
bpy.context.object.location[1] = locy
bpy.ops.object.transform_apply(location=True, rotation=False, scale=False)
bpy.ops.object.origin_set(type="ORIGIN_GEOMETRY")
bpy.ops.transform.rotate(value=radians(rot), axis=(0, 0, 1))
bpy.ops.object.origin_set(type="ORIGIN_CURSOR")
bpy.ops.transform.rotate(value=radians(rot2), axis=(0, 0, 1))tripodes droite
def tripode66A(locX, locY, pos, rot):
A = [
(2, 17 + locX, -10 + locY, -30),
(3, 24 + locX, -14 + locY, -30),
(4, 31 + locX, -18 + locY, -30),
(6, 45 + locX, -26 + locY, -30),
]
B = [
(2, locX, 20 + locY, 90),
(3, locX, 28 + locY, 90),
(4, locX, 36 + locY, 90),
(6, locX, 52 + locY, 90),
]
C = [(6, -45 + locX, -26 + locY, 30)]
Achoice = choice(A)
w, x, y, z = Achoice
barre(w, x, y, z, pos, rot)
Bchoice = choice(B)
w, x, y, z = Bchoice
barre(w, x, y, z, pos, rot)
Cchoice = choice(C)
w, x, y, z = Cchoice
barre(w, x, y, z, pos, rot)def tripode64A(locX, locY, pos, rot):
A = [
(2, 17 + locX, -10 + locY, -30),
(3, 24 + locX, -14 + locY, -30),
(4, 31 + locX, -18 + locY, -30),
(6, 45 + locX, -26 + locY, -30),
]
B = [
(2, locX, 20 + locY, 90),
(3, locX, 28 + locY, 90),
(4, locX, 36 + locY, 90),
(6, locX, 52 + locY, 90),
]
C = [(4, -31 + locX, -18 + locY, 30)]
Achoice = choice(A)
w, x, y, z = Achoice
barre(w, x, y, z, pos, rot)
Bchoice = choice(B)
w, x, y, z = Bchoice
barre(w, x, y, z, pos, rot)
Cchoice = choice(C)
w, x, y, z = Cchoice
barre(w, x, y, z, pos, rot)def tripode33A(locX, locY, pos, rot):
A = [
(2, 17 + locX, -10 + locY, -30),
(3, 24 + locX, -14 + locY, -30),
(4, 31 + locX, -18 + locY, -30),
(6, 45 + locX, -26 + locY, -30),
]
B = [
(2, locX, 20 + locY, 90),
(3, locX, 28 + locY, 90),
(4, locX, 36 + locY, 90),
(6, locX, 52 + locY, 90),
]
C = [(3, -24 + locX, -14 + locY, 30)]
Achoice = choice(A)
w, x, y, z = Achoice
barre(w, x, y, z, pos, rot)
Bchoice = choice(B)
w, x, y, z = Bchoice
barre(w, x, y, z, pos, rot)
Cchoice = choice(C)
w, x, y, z = Cchoice
barre(w, x, y, z, pos, rot)def tripode34A(locX, locY, pos, rot):
A = [
(2, 17 + locX, -10 + locY, -30),
(3, 24 + locX, -14 + locY, -30),
(4, 31 + locX, -18 + locY, -30),
(6, 45 + locX, -26 + locY, -30),
]
B = [
(2, locX, 20 + locY, 90),
(3, locX, 28 + locY, 90),
(4, locX, 36 + locY, 90),
(6, locX, 52 + locY, 90),
]
C = [(4, -31 + locX, -18 + locY, 30)]
Achoice = choice(A)
w, x, y, z = Achoice
barre(w, x, y, z, pos, rot)
Bchoice = choice(B)
w, x, y, z = Bchoice
barre(w, x, y, z, pos, rot)
Cchoice = choice(C)
w, x, y, z = Cchoice
barre(w, x, y, z, pos, rot)def tripode43A(locX, locY, pos, rot):
A = [
(2, 17 + locX, -10 + locY, -30),
(3, 24 + locX, -14 + locY, -30),
(4, 31 + locX, -18 + locY, -30),
(6, 45 + locX, -26 + locY, -30),
]
B = [
(2, locX, 20 + locY, 90),
(3, locX, 28 + locY, 90),
(4, locX, 36 + locY, 90),
(6, locX, 52 + locY, 90),
]
C = [(3, -24 + locX, -14 + locY, 30)]
Achoice = choice(A)
w, x, y, z = Achoice
barre(w, x, y, z, pos, rot)
Bchoice = choice(B)
w, x, y, z = Bchoice
barre(w, x, y, z, pos, rot)
Cchoice = choice(C)
w, x, y, z = Cchoice
barre(w, x, y, z, pos, rot)tripodes gauche:
def tripode66B(locX, locY, pos, rot):
A = [
(2, -17 + locX, -10 + locY, 30),
(3, -24 + locX, -14 + locY, 30),
(4, -31 + locX, -18 + locY, 30),
(6, -45 + locX, -26 + locY, 30),
]
B = [
(2, locX, 20 + locY, 90),
(3, locX, 28 + locY, 90),
(4, locX, 36 + locY, 90),
(6, locX, 52 + locY, 90),
]
C = [(6, 45 + locX, -26 + locY, -30)]
Achoice = choice(A)
w, x, y, z = Achoice
barre(w, x, y, z, pos, rot)
Bchoice = choice(B)
w, x, y, z = Bchoice
barre(w, x, y, z, pos, rot)
Cchoice = choice(C)
w, x, y, z = Cchoice
barre(w, x, y, z, pos, rot)def tripode64B(locX, locY, pos, rot):
A = [
(2, -17 + locX, -10 + locY, 30),
(3, -24 + locX, -14 + locY, 30),
(4, -31 + locX, -18 + locY, 30),
(6, -45 + locX, -26 + locY, 30),
]
B = [
(2, locX, 20 + locY, 90),
(3, locX, 28 + locY, 90),
(4, locX, 36 + locY, 90),
(6, locX, 52 + locY, 90),
]
C = [(4, 31 + locX, -18 + locY, -30)]
Achoice = choice(A)
w, x, y, z = Achoice
barre(w, x, y, z, pos, rot)
Bchoice = choice(B)
w, x, y, z = Bchoice
barre(w, x, y, z, pos, rot)
Cchoice = choice(C)
w, x, y, z = Cchoice
barre(w, x, y, z, pos, rot)def tripode33B(locX, locY, pos, rot):
A = [
(2, -17 + locX, -10 + locY, 30),
(3, -24 + locX, -14 + locY, 30),
(4, -31 + locX, -18 + locY, 30),
(6, -45 + locX, -26 + locY, 30),
]
B = [
(2, locX, 20 + locY, 90),
(3, locX, 28 + locY, 90),
(4, locX, 36 + locY, 90),
(6, locX, 52 + locY, 90),
]
C = [(3, 24 + locX, -14 + locY, -30)]
Achoice = choice(A)
w, x, y, z = Achoice
barre(w, x, y, z, pos, rot)
Bchoice = choice(B)
w, x, y, z = Bchoice
barre(w, x, y, z, pos, rot)
Cchoice = choice(C)
w, x, y, z = Cchoice
barre(w, x, y, z, pos, rot)def tripode34B(locX, locY, pos, rot):
A = [
(2, -17 + locX, -10 + locY, 30),
(3, -24 + locX, -14 + locY, 30),
(4, -31 + locX, -18 + locY, 30),
(6, -45 + locX, -26 + locY, 30),
]
B = [
(2, locX, 20 + locY, 90),
(3, locX, 28 + locY, 90),
(4, locX, 36 + locY, 90),
(6, locX, 52 + locY, 90),
]
C = [(4, 31 + locX, -18 + locY, -30)]
Achoice = choice(A)
w, x, y, z = Achoice
barre(w, x, y, z, pos, rot)
Bchoice = choice(B)
w, x, y, z = Bchoice
barre(w, x, y, z, pos, rot)
Cchoice = choice(C)
w, x, y, z = Cchoice
barre(w, x, y, z, pos, rot)def tripode43B(locX, locY, pos, rot):
A = [
(2, -17 + locX, -10 + locY, 30),
(3, -24 + locX, -14 + locY, 30),
(4, -31 + locX, -18 + locY, 30),
(6, -45 + locX, -26 + locY, 30),
]
B = [
(2, locX, 20 + locY, 90),
(3, locX, 28 + locY, 90),
(4, locX, 36 + locY, 90),
(6, locX, 52 + locY, 90),
]
C = [(3, 24 + locX, -14 + locY, -30)]
Achoice = choice(A)
w, x, y, z = Achoice
barre(w, x, y, z, pos, rot)
Bchoice = choice(B)
w, x, y, z = Bchoice
barre(w, x, y, z, pos, rot)
Cchoice = choice(C)
w, x, y, z = Cchoice
barre(w, x, y, z, pos, rot)tripodes
def tripode(locX, locY, pos, rot):
A = [(2, 17, 10, 30), (3, 24, 14, 30), (4, 31, 18, 30), (6, 45, 26, 30)]
B = [(2, -17, 10, -30), (3, -24, 14, -30), (4, -31, 18, -30), (6, -45, 26, -30)]
C = [(2, 0, -20, 90), (3, 0, -28, 90), (4, 0, -36, 90), (6, 0, -52, 90)]
A6 = [(6, 135, 62, 30), (6, 121, 86, 30), (4, 121, 54, 30), (4, 107, 78, 30)]
A3 = [(3, 73, 26, 30), (3, 59, 50, 30), (4, 78, 30, 30), (4, 66, 54, 30)]
A4 = [(3, 87, 34, 30), (3, 73, 58, 30)]
B6 = [
(6, -135, 62, -30),
(6, -121, 86, -30),
(4, -121, 54, -30),
(4, -107, 78, -30),
]
B3 = [(3, -73, 26), (3, -59, 50, -30), (4, -80, 30, -30), (4, -66, 54, -30)]
B4 = [(3, -87, 34, -30), (3, -73, 58, -30)]
C6 = [(6, 14, -148, 90), (6, -14, -148, 90), (4, 14, -132, 90), (4, -14, -132, 90)]
C3 = [(3, 14, -76, 90), (3, -14, -76, 90), (4, 14, -84, 90), (4, -14, -84, 90)]
C4 = [(3, 14, -92, 90), (3, -14, -92, 90)]
Achoice = choice(A)
w, x, y, z = Achoice
x = x + locX
y = y + locY
barre(w, x, y, z, pos, rot)
if Achoice == (6, 45, 26, 30):
tripode66A(180 + locX, 88 + locY, pos, rot)
elif Achoice == (3, 24, 14, 30):
tripode33A(97 + locX, 40 + locY, pos, rot)
elif Achoice == (4, 31, 18, 30):
tripode43A(111 + locX, 48 + locY, pos, rot)
Bchoice = choice(B)
w, x, y, z = Bchoice
x = x + locX
y = y + locY
barre(w, x, y, z, pos, rot)
if Bchoice == (6, -45, 26, -30):
tripode66B(-180 + locX, 88 + locY, pos, rot)
elif Bchoice == (3, -24, 14, -30):
tripode33B(-97 + locX, 40 + locY, pos, rot)
elif Bchoice == (4, -31, 18, -30):
tripode43B(-111 + locX, 48 + locY, pos, rot)
Cchoice = choice(C)
w, x, y, z = Cchoice
x = x + locX
y = y + locY
barre(w, x, y, z, pos, rot)
if Cchoice == (6, 0, -52, 90):
C6choice = choice(C6)
w, x, y, z = C6choice
x = x + locX
y = y + locY
barre(w, x, y, z, pos, rot)
elif Cchoice == (3, 0, -28, 90):
C3choice = choice(C3)
w, x, y, z = C3choice
x = x + locX
y = y + locY
barre(w, x, y, z, pos, rot)
elif Cchoice == (4, 0, -36, 90):
C4choice = choice(C4)
w, x, y, z = C4choice
x = x + locX
y = y + locY
barre(w, x, y, z, pos, rot) print(choice(A))
print("---") if Achoice = A[3]:
A6=[(6,135,62,30),(6,121,86,30),(4,121,54,30),(4,107,78,30)]
A6choice = choice (A6)
w,x,y,z = A6choice
barre (w,x,y,z,pos,rot)
elif barre (w,x,y,z,pos,rot) = (3,24,14,30):
A3=[(3,73,26,30),(3,59,50,30),(4,78,30,30),(4,66,54,30)]
A3choice = choice (A3)
w,x,y,z = A3choice
barre (w,x,y,z,pos,rot)
elif barre (w,x,y,z,pos,rot) = (4,31,18,30):
A4=[(3,87,34,30),(3,73,58,30)]
A4choice = choice (A4)
w,x,y,z = A4choice
barre (w,x,y,z,pos,rot)"""
"""
si A=6
A6=[(6,135,62,30),(6,121,86,30),(4,121,54,30),(4,107,78,30)]
si A=3
A3=[(3,73,26,30),(3,59,50,30),(4,78,30,30),(4,66,54,30)]
si A=4
A4=[(3,87,34,30),(3,73,58,30)]
si B=6
B6=[(6,-135,62,-30),(6,-121,86,-30),(4,-121,54,-30),(4,-107,78,-30)]
si B=3
B3=[(3,-73,26),(3,-59,50,-30),(4,-80,30,-30),(4,-66,54,-30)]
si B=4
B4=[(3,-87,34,-30),(3,-73,58,-30)]
si C=6
C6=[(6,14,-148,90),(6,-14,-148,90),(4,14,-132,90),(4,-14,-132,90)]
si C=3
C3=[(3,14,-76,90),(3,-14,-76,90),(4,14,-84,90),(4,-14,-84,90)]
si C=4
C4= [(3,14,-92,90),(3,-14,-92,90)]"""
#DIVIDER
tripode(0, 0, (0, 0, 0), 30)
#DIVIDER
#DIVIDER
def triangle(nom, rayon, position):
bpy.ops.mesh.primitive_circle_add(vertices=3, location=position)
bpy.ops.transform.resize(value=(rayon, rayon, rayon))
bpy.ops.object.transform_apply(location=True, rotation=False, scale=True)
bpy.context.object.name = nom
triangle("triangle", 8.0829, (0, 0, 0))
creation tripode